Personal advisor for managing private information

ABSTRACT

Regulating a flow of data from an electronic device comprises generating a user profile associated with a user. Further, a resource profile is generated and is associated with one or more resources external to the electronic device. Additionally, a context profile is generated and describes an outcome of one or more previous interactions between the user of the electronic device and one or more resources. Rules are generated based on a comparison the user profile, the context profile and the site profile. Further, data sent from an electronic device is modified based on the set of rules.

BACKGROUND

Maintaining control over the privacy of a user's data has proven to bedifficult. For example, while interacting with various websites, theamount of a user data requested by the websites is commonly beyond theability of a user to track. As such, users are typically unable tocontrol what information and when information is shared with a website.In some instances, software has been employed to aid with controllinguser data. However, current methods for controlling the sharing of userinformation heavily rely on a user's involvement, and thus, areburdensome for the user. As such, users commonly elect not to use suchsoftware, choosing to allow the user's personal data to be uncontrolled.Thus, there is a need for an improved data control system that maintainsthe privacy of a user's data without requiring significant input fromthe user.

SUMMARY

According to one embodiment of the present invention, a method forregulating a flow of data from an electronic device comprises generatinga user profile associated with a user. The method further comprisesgenerating a resource profile associated with one or more resourcesexternal to the electronic device, and generating a context profiledescribing an outcome of one or more previous interactions between theuser of the electronic device and one or more of the plurality ofresources. Further, the method comprises generating set of rules basedon a comparison of the user profile, the resource profile, and thecontext profile, and modifying outgoing data being sent to a first oneof plurality of the resources from the electronic device based on theset of rules. Each rule of the set of rules defines at least one of whenand what type of data of the user profile is shared with each of theplurality of resources.

According to one embodiment of the present invention, an electronicdevice comprises an advisor. The advisor comprises user profile manager,a resource profile manager, a context profile manager, and a rulemanager. The user profile manager is configured to generate a userprofile associated with a user. The resource profile manager isconfigured to generate a resource profile associated with one or moreresources external to the electronic device. The context profile manageris configured to generate a context profile describing an outcome of oneor more previous interactions between the user of the electronic deviceand one or more resources. The rule manager is configured to generate aset of rules based on a comparison of the user profile, the contextprofile and the resource profile. Further, the advisor is configured tomodify outgoing data from the electronic device based on the set ofrules. Each rule of the set of rules defines at least one of when andwhat type of data of the user profile is shared with each of theplurality of resources.

According to one embodiment of the present invention, a computer programproduct for controller user data comprises a computer-readable storagemedium having computer-readable program code embodied therewith. Thecomputer-readable program code is executable by one or more computerprocessors to generate a user profile comprising data associated with auser, and generate a resource profile associated with one or moreresources external to the electronic device. Further, thecomputer-readable program code is executable to generate a contextprofile describing an outcome of one or more previous interactionsbetween the user of the electronic device and one or more resources,generate a set of rules based on a comparison of the user profile, thecontext profile and the site profile, and modify outgoing data beingsent to one of the one or more resources based on the set of rules. Eachrule of the set of rules defines at least one of when and what type ofdata of the user profile is shared with each of the plurality ofresources.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an electronic device, according toone more embodiments.

FIG. 2 illustrates a block diagram of an advisor, according to one ormore embodiments.

FIG. 3 illustrates a block diagram of a network, according to one ormore embodiments.

FIG. 4 is a flowchart of a method of modifying data being sent from anelectronic device, according to one or more embodiments.

FIG. 5 is a flowchart of a method of identifying rules, according to oneor more embodiments.

DETAILED DESCRIPTION

Embodiments herein describe regulating data provided by a user from anelectronic device. In one embodiment, the electronic device includes anadvisor (e.g., a software application) that regulates data communicatedfrom the electronic device to a resource remote from the electronicdevice. A remote electronic device may include one or more of a website,a file server, a cloud hosted service, an email server, an ecommercesite, and an online banking site, among others. In one embodiment, theadvisor includes rules (e.g., policies) which may be used to govern datathat is sent to a remote resource. In various embodiments, the advisorcontrols the data communicated to a remote resource, limiting orgranting access to portions of the data based on the rules without userintervention. Accordingly, the advisor improves user experience bymitigating the amount of input provided by the user regarding which datais to be shared with which remote resource.

With reference now to FIG. 1, an electronic device 100 includes anadvisor 110. In various embodiments, the electronic device 100 furtherincludes one or more of a processor 120, a network interface controller(NIC) 130, and a memory 140. The electronic device 100 may be a mobiletelephone, a laptop, a tablet, a desktop, or a wearable computing device(e.g., smartwatch, fitness tracker, etch), among others.

The memory 140 generally includes program code for performing variousfunctions related to operating the electronic device 100. The programcode is generally described as various functional “applications” or“modules” within the memory 140, although alternate implementations mayhave different functions or combinations of functions. The memory 140also generally includes data structures that may store information foruse by the various program code modules also stored thereon. Forexample, the memory 140 includes program code for an advisor 110 anddata structures for user profile 113, resource profile 115, contextprofile 117, and rules 119. Further, other applications and datastructures may also be included by the memory 140.

The advisor 110 may control data communicated from the electronic device100. For example, the advisor 110 may modify the data being sent fromthe electronic device 100, adding and/or removing data packets from thedata.

As shown, the advisor 110 includes a user profile manager 112, aresource profile manager 114, a context profile manager 116, and a rulemanager 118. The user profile manager 112 builds a user profile 113comprising data associated with a user of the electronic device 100. Forexample, the data may be based on attributes associated with the user.In one embodiment, the attributes may include one or more of abirthdate, a relationship with others, associations with groups (e.g.,employers, memberships, social networks, trade associations, companies,services, etc.). In one embodiment, the user profile data of a user maybe a graph that captures the known relationships of different humans,with one user indicated as being the owner of the data.

In one embodiment, the user profile manager 112 builds the user profile113 without explicit user input. For example, the user profile manager112 may build the user profile from data stored within the electronicdevice 100 (e.g., data stored within the memory 140). Additionally, oralternatively, the user profile manager 112 may build the user profile113 based on data associated within one or more applications running onthe electronic device 100. Further, the user profile manager 112 maybuild the user profile 113 based on data associated with one or morewebsites visited by a user. The user profile 113 may be built usingalgorithms that utilize entries in a contact list associated with theuser, dates scheduled into a calendar associated with the user, and thevolume of data exchanged on specific dates by the user, among others. Inone embodiment, the user profile 113 may define birth dates of relativesand/or friends of the user, age of the user, employer of the user, thepreferred language of the user, and/or other similar attributes.

The resource profile manager 114 builds a resource profile 115 includingdata corresponding to one or more attributes of one or more resources.The resources are remote from the electronic device 100. For example,the resources may be a website, an application running on a server(e.g., cloud computing applications), and the like. Applications runningon a server may include communication applications, monitoringapplications, finance applications, content delivery applications, andstorage applications, among others. In one or more embodiments, the dataof the resource profile 115 includes a category characterization, anowner of the resource, location of the resource, risk rating of theresource, hosting company, and whether or not the user of the electronicdevice 100 has an account with a selected resource, among others. In oneembodiment, the category characterization includes a commerce category,a trade category, a company category, and an association category, amongothers. Further, the location of the resource may correspond to acountry in which the resource is hosted, or the location of the owner ofthe resource, among others.

In one embodiment, the resource profile manager 114 builds a resourceprofile for each resource. Further, the resource profile manager 114 maybuild a resource profile (e.g., the resource profile 115) by runningclassification algorithms on a resource, analyzing the contents of aresource, or requesting data associated with a resource from a service,among others. In one embodiment, a monitoring service providesinformation related to a categorization of a resource, location of aresource, and ownership of a resource, among others In one or moreembodiments, running classification algorithms on a resource may includerunning a classification algorithm on a main page, or any other page, ofa website to determine the class of the resource (e.g. a banking site, asocial media site, an e-commerce site, and a search engine, amongothers). Further, analyzing the contents of a resource may includeanalyzing the main page of a website. Requesting data associated with aresource may include requesting data from a search engine. In oneembodiment, the data associated with a resource may include one or moredifferent types of discount codes available for the resource. In someembodiments, the resource profile manager 114 may request that the userreview and/or modify the created resource profiles.

The context profile manager 116 builds a context profile 117 thatassociates data within a user profile (e.g., the user profile 113) withdata of a resource profile (e.g., the resource profile 115). In oneembodiment, the context profile 117 comprises data associated with whenand/or where a user would like to provide data within the user profile113 to a resource or a category of resource. For example, the contextprofile 117 may include data corresponding to an association betweendata of a user profile (e.g., the user profile 113), data of a resourceprofile (e.g., the resource profile 115), and an event. An event maycorrespond to whether or not a data from a user profile was shared witha resource. Further, the context profile 117 may include informationregarding one or more user preferences. For example, the informationregarding one or more user preferences may include whether a userprefers one type of resource over another for a particular task (e.g.,commerce, banking, trading, etc.), a user prefers one payment methodover another for a particular resource (e.g., a preferred credit card, apreferred payment service, etc.), whether or not a user releases one ormore types of information (e.g. an email address, social mediaidentifier, age, birthday, or the like), a time period over which a userprefers to receive reminders regarding different events, and/or a timeperiod or user location during when the user does not or does want toshare select data, among others.

The context profile 117 may associate data from a user profile (e.g.,the user profile 113) with a resource and/or with a resource category.For example, the context profile 117 may associate data from the userprofile 113 with a specific website. Further, the context profile 117may associate data from the user profile 113 with a resource category(e.g., e-commerce website, a social network, a banking website, or anews website, among others).

In one embodiment, the context profile manager 116 builds the contextprofile 117 automatically, without explicit user input. For example, thecontext profile manager 116 builds the context profile 117 by observinga user's interactions with various resources. In one embodiment, thecontext profile manager 116 analyzes data being sent from the electronicdevice 100 to various resources, and in response to the analyzed data,builds the context profile 117. For example, in one embodiment, thecontext profile manager 116 analyzes data being sent from the electronicdevice 100 to an e-commerce resource and data being sent to a bankingresource to determine that the user shares a first type of data with acommerce resource and a second type of data with a banking resource. Thefirst type of data may include one or more of a payment method, and amembership in an organization. The second type of data may include oneor more of a social network membership, and location of the user. Inother embodiments, the first and second types of data may include otherdata types. In some embodiments, the context profile manager 116requests the user to review and/or modify the context profiles.

In one embodiment, user preferences used to build the context profile117 may be created by determining the frequency of which resources arevisited or utilized by a user. Further, the context profile manager 116may also include a preference to receive the lowest cost for a good orservice, preference as to when receive an order, and preferencesregarding the purchase of goods or services (e.g., proximate holidays,birthdays, anniversaries. etc.). For example, the context profilemanager 116 may include a preference that a user prefers to make a giftpurchase one or more days before a holiday or an anniversary event.

In one embodiment, the context profile manager 116 presents one or morequestions to a user to build the context profile 117. For example, thecontext profile manager 116 may determine data that the context profile117 lacks for a user and presents a question to the user correspondingto the data lacking from the context profile 117.

In one embodiment, the context profile manager 116 updates the contextprofile 117 based on observations of user's interactions with variousresources. The context profile manager 116 may analyze each interactionwith a resource, or analyze each interaction with a resource over aperiod of time.

The rule manager 118 generates rules (or policies) 119 based on the userprofile 113, the resource profile 115, and the context profile 117. Therules 119 may govern which data is provided to which resource and/orwhen data is to be provided to each resource. Further, the rules 119 maygovern which data and/or when data is provided to a type of resource.Each of the rules 119 may associate data or a data type, a resource orresource type, and a data release preference of a user. In oneembodiment, the rules 119 are generated automatically, without userintervention. Further, the rules 119 may be updated continuously orperiodically.

In one embodiment, the rule manager 118 utilizes a machine learningalgorithm to generate the rules 119 from the user profile 113, theresource profile 115, and the context profile 117. The machine learningalgorithm may be any algorithm that compares the user attributes storedwithin the user profile 113 with the resource attributes stored withinthe resource profile 115 and the context of whether or not user data wasshared from the context profile 117 to generate the rules 119. In oneembodiment, the machine learning algorithm is a data mining algorithmthat compares the data of the user profile 113, the resource profile115, and the context profile 117 to generate the rules 119. In oneembodiment, the machine learning algorithm is a neural network thatfunctions as a prediction system to generate the rules 119.Alternatively, the machine learning algorithm may be a clusteringalgorithm. A clustering algorithm can be executed on lower powerprocessors as compared to other machine learning algorithms. Forexample, a cluster algorithm can execute on the processor (e.g., theprocessor 120) of a mobile phone or tablet device which can be lowerpowered or slower processors.

In one embodiment, the rules 119 may allow a first type of data to beshared with a resource, or a resource type. For example, a rule of therules 119 may allow membership information for a user to be shared withan e-commerce website. Further, a rule may prevent data to be sharedwith a resource or a resource type. For example, a rule may preventsharing of data corresponding to a user's current location or socialnetwork membership with an e-commerce or banking website.

In one or more embodiments, one or more of the profiles (e.g., theresource profile 115, and the context profile 117) and the rules (e.g.,the rules 119) associated with a first user is bootstrapped with dataassociated with a second user having one or more similar attributes asthe first user. For example, the advisor 110 may generate one or morerules associated with the first user based on one or more rulesassociated with the second user. Further, the advisor 110 may loadportions or all of a resource profile (e.g., the resource profile 115)and/or portions or all of a context profile 117 associated with thesecond user into corresponding profiles associated with the first user.In one embodiment, identifying a user that has a similar attributeassociated with another user comprises identifying users that are in acommon age bracket, have a common employer, have a common social networkmembership, have a family relationship, and are located at a commonaddress, among others.

The processor 120 may be any general processing device. For example, theprocessor 120 may be a central processing unit (CPU) of the electronicdevice 100. Further, in one embodiment, the processor may be anapplication specific integrated circuit (ASIC).

The NIC 130 communicates data to and from the electronic device 100. TheNIC 130 may be a wireless NIC or a wired NIC. Further, the NIC 130 maycommunicatively couple the electronic device 100 with a wireless networkor wired network. The NIC 130 may be communicatively coupled to theprocessor 120, such that the processor 120 may provide control signalsto the NIC 130. In one embodiment, the NIC 130 is communicativelycoupled with the advisor 110. For example, the advisor 110 may receivethe data passing through the NIC 130 such that the data may be analyzedand/or modified based on the rules 119.

The memory 140 may be any type of storage device. For example, thememory 140 may be a non-volatile memory (NVM) device, or random accessmemory (RAM) device, among others. In one embodiment, the memory 140includes one or more storage devices. For example, the memory 140 mayinclude one or more NVM devices. Further, the memory 140 may include aNVM device and a RAM device. The memory 140 is communicatively coupledwith the processor 120. In one embodiment, the memory 140 iscommunicatively coupled to the advisor 110. For example, the memory 140may be communicatively coupled to the user profile manager 112, theresource profile manager 114, the context profile manager 116, and therules manager 118. Further, the memory 140 may store one or more of theuser profile 113, the resource profile 115, the context profile 117, andthe rules 119.

FIG. 2 illustrates the advisor 110. As illustrated in FIG. 2, the rulemanager 118 is communicatively coupled with the user profile manager112, the resource profile manager 114, and the context profile manager116. For example, the rule manager 118 is configured to access the userprofile 113 generated by the user profile manager 112, the resourceprofile 115 generated by the resource profile manager 114, and thecontext profile 117 from the context profile manager 116. In oneembodiment, the rule manager 118 generates the rules 119 from the userprofile 113, the resource profile 115 and the context profile 117. Inone embodiment, the rules 119 include user alerting policies 210 anddata release policies 212.

The user alerting policies 210 comprise rules corresponding to when auser is to be alerted that data or a data type has been requested by aresource or a resource type. The data release policies 212 correspond towhat data or data type and/or when data or a type of data is to beprovided to a resource or a resource type.

FIG. 3 illustrates network 300 comprising an electronic device 310, awireless area network (WAN) 320, and a resource 330. The electronicdevice 310 is configured similar to that of the electronic device 100.For example, the electronic device 310 includes the advisor 110.Further, while not shown, the electronic device 310 includes theprocessor 120, the NIC 130, and the memory 140. Further, the electronicdevice 310 includes a client 312. The client 312 communicates with theresource 330 via the WAN 320. The client 312 may be an applicationrunning locally on the electronic device 310. For example, the client312 may be a web browser or an application running on the electronicdevice 310 (e.g., a banking application, a social network application,or a commerce application, among others).

In one embodiment, the client 312 communicates with the resource 330 viathe WAN 320. For example, a NIC (e.g., the NIC 130) of the electronicdevice 310 may form a wireless connection with the resource 330 via theWAN 320. Further, the client 312 may communicate data to and receivedata from the resource 330 via the connection formed with the WAN 320.The data sent from the client 312 to the resource 330 and sent from theresource 330 to the client 312 may be in the form of data packets.

The resource 330 is remote from the electronic device 310. For example,the resource 330 may be located within one or more servers remote fromthe electronic device 310. In one embodiment, the resource 330 is awebsite. In various embodiments, the resource 333 may be a collection ofrelated network web resources, e.g., web pages and multimedia content,etc., located on one or more servers.

In one embodiment, the advisor 110 analyses the data transmitted fromthe client 312 to the resource 330. For example, the advisor 110 mayanalyze the data packets being sent to and from the client 312. Further,the advisor 110 may modify the data packets based on the rules 119. Inone or more embodiments, the advisor 110 removes one or more datapackets from the data packets being sent to the resource 330 based onthe rules 119. For example, the advisor 110 may remove a data packetcontaining information that the rules 119 defined as not sharable withthe resource 330 or a resource type corresponding to the resource 330.In various embodiments, the advisor 110 adds one or more data packets tothe data being sent to the resource 330 based on the rules 119. Forexample, the advisor 110 may add a data packet containing informationthat the rules 119 define as being sharable with the resource 330 or aresource type corresponding to the resource 330.

In one embodiment, the advisor 110 may analyze at least a portion of thedata being sent to and from the electronic device 310. In otherembodiments, the advisor 110 may analyze data being sent from selectclients running on the electronic device 310. Further, the advisor 110may analyze data before it is received by the client 312. For example,the advisor 110 may analyze data as it received from the NIC (e.g., theNIC 130) of the electronic device 310. In one or more embodiments, theclient 312 may provide the data to the advisor 110 after receiving thedata from the NIC (e.g., the NIC 130) of the electronic device 310 andbefore data is sent to the NIC to be transmitted from the electronicdevice 310. In such an embodiment, the advisor 110 may communicate withthe NIC of the electronic device 310, or the advisor 110 may be able tosend data directly to the NIC while receiving data from the client 312.

FIG. 4 is a flow chart of a method for regulating data transmitted toand from an electronic device (e.g., the electronic device 100 or 310).At operation 410, the user profile manager 112 of the advisor 110generates the user profile 113. In one embodiment, the user profilemanager 112 may receive instructions from the processor 120 to analyzedata stored within the electronic device 100 to generate the userprofile 113. For example, the user profile manager 112 may analyze datalocated on an electronic device (e.g., the electronic device 100 or 310)to identify data associated with a user. In various embodiments, theuser profile manager 112 receives instructions from the processor 120 toanalyze data being sent to the electronic device or from the electronicdevice to identify data associated with a user. For example, the userprofile manager 112 may analyze messages (e.g., text message, or emailmessages, among others) being sent to the electronic device or from theelectronic device. Further, the user profile manager 112 may analyzedata being sent from one or more clients (e.g., the client 312) or toone or more clients to identify data associated with a user.

In one embodiment, the user profile manager 112 builds the user profile113 based on data within one or more messages communicated to theelectronic device 100 and/or from the electronic device 100. Forexample, the user profile manager 112 may analyze the messages todetermine one or more attributes of a user (e.g., birthday, anniversary,relationships, etc.). In one or more embodiments, the user profilemanager 112 builds a user profile 113 or augments data within a userprofile 113 based on one or more answers provided by a user to one ormore questions. For example, the user profile manager 112 may beconfigured to present one or more questions to a user, and build oraugment the user profile 113 based on the provided answers. In oneembodiment, the user profile manager 112 generates the questions basedon information that is determined to be lacking from the data within theuser profile 113. For example, the user profile manager 112 may presenta question to the user asking for the user's birthday in response to adetermination that the user's birthday is absent from the correspondinguser profile (e.g., the user profile 113).

The user profile manager 112 may store the data as a user profile (e.g.,the user profile 113) within the memory 140. For example, the userprofile may be stored within a database of the memory 140.

At operation 420 the resource profile manager 114 of the advisor 110generates the resource profile 115. In one embodiment, the resourceprofile manager 114 receives instructions from the processor 120 toacquire information associated within one or more resources. Theresource may be a remote resource that is communicatively coupled to theelectronic device (e.g., the electronic device 100 or 310) via a NIC(e.g., the NIC 130). In one embodiment, the resource profile manager 114builds each resource profile and/or each resource type with which a usercommunicates. In various embodiments, to build each resource profile,the resource profile manager 114 may research the information availablefor a resource, running classification algorithms on a resource,analyzing the contents of a resource, or requesting data associated witha resource from a service, among others. In one embodiment, researchinga resource may include researching a research to determine one or moreof a categorization, location, owner, and hosting information, amongothers, for a resource. For example, the resource profile manager 114may communicate with a monitoring service to determine a categorizationof a resource. Further, the resource profile manager 114 may run one ormore classification algorithms on one or more pages of a resource todetermine the classification of the resource. In various embodiments,the resource profile manager 114 requests data associated with aresource from a web or internet search engine.

The resource profile manager 114 may store the data for each resource asa resource profile (e.g., the resource profile 115) within the memory140. For example, the resource profile may be stored within a databaseof the memory 140.

At operation 430, the context profile manager 116 generates a contextprofile (e.g., the context profile 117). In one embodiment, the contextprofile manager 116 receives instructions from the processor 120 tobuild a context profile (e.g., the context profile 117). For example,the context profile manager 116 may receive instructions to generate acontext profile for a newly added resource or for a new user preference.In one embodiment, the context profile manager 116 receives instructionsfrom the processor 120 to build the context profile 117 automatically,without relying on explicit input provided by a user. For example, thecontext profile manager 116 may receive instructions to build a contextprofile by observing a user's interactions with one or more resources.For example, the context profile manager 116 may receive instructions toanalyze data being sent by a user from an electronic device (e.g., theelectronic device 100 or 310) to various resources. In variousembodiments, the context profile manager 116 may track a user'spreferences over a period of time when interacting with one or moreresources or one or more categorizes of a resources. For example, thecontext profile manager 116 may track a user's interactions to determinea user's preferences for sharing various types of data with differentcategories of resources.

At operation 440, the rule manager 118 generates a set of rules (e.g.,the rules 119). In one embodiment, the rule manager 118 receivesinstructions from the processor 120 to generate the set of rules. In oneembodiment, the rule manager 118 utilizes a machine learning algorithmto generate the rules 119 from the user profile 113, the resourceprofile 115, and the context profile 117. For example, the rule manager118 may utilize a data mining technique to generate the rules 119. Inembodiment, the rule manager 118 may utilize a clustering algorithm togenerate a set of rules (e.g., the rules 119) for a user. Alternatively,the rule manager 118 may utilize a neural network to generate a set ofrules (e.g., the rules 119) for a user.

In one embodiment, rules are generated by comparing the user attributesof a user profile (e.g., the user profile 113), a resource profile(e.g., the resource profile 115), and a context profile (e.g., thecontext profile 117). In one embodiment, the data of the context profile117 may be utilized to determine which attributes of a user profile 113are shared with which resource or resource category. For example, acomparison of the context profile 117 with the user profile 113 and theresource profile 115 may indicate that a user shared informationregarding the user's age with an e-commerce website. Accordingly, a rulemay be created that allows the user's age to be shared with any websitecategorized as an e-commerce website.

At operation 450, the advisor 110 modifies the data being sent from anelectronic device (e.g., the electronic device 100 or 310). For example,the advisor 110 may analyze the data being sent to and/or from anelectronic device (e.g., the electronic device 100 or 310) and removesor adds data to the data being sent from an electronic device based on aset of rules (e.g., the rules 119). At operation 452, the advisor 110adds one or more data packets to the data being sent from an electronicdevice (e.g., the electronic device 100 or 310) based on the rules 119.For example, the advisor 110 may determine the data that is beingrequested from a website, and based on an indication from the set ofrules 119 as to whether or not the data can be shared with the websiteor the category of website, the advisor 110 adds a data packetcorresponding to a requested data to the data be sent from an electronicdevice based on the set of rules 119. In one embodiment, the advisor 110adds one or more data packets corresponding at least one of a user'sbirthday, employment association, social network membership, and paymentpreference, among others, to the data being sent from an electronicdevice based on the set of rules 119.

At operation 454, the advisor 110 removes one or more data packets fromthe data being sent from an electronic device (e.g., the electronicdevice 100 or 310) based on the set of rules 119. For example, theadvisor 110 may determine the data that is being requested from awebsite, and based on an indication from the set of rules 119 as towhether or not the data can be shared with the website or the categoryof website. Further, based on the set of rules 119, the advisor 110removes a data packet corresponding to the requested data from the databe sent from an electronic device based on the set of rules 119. In oneembodiment, the advisor 110 removes one or more data packetscorresponding at least one of a user's birthday, employment association,social network membership, and payment preference, among others, fromthe data being sent from an electronic device based on the set of rules119.

FIG. 5 is a flow chart of a method 500 for identifying rules utilized toregulate data transmitted between an electronic device (e.g., theelectronic device 100 or 310) and a resource (e.g., the resource 330).At operation 510, the advisor 110 analyzes data being sent from anelectronic device (e.g., the electronic device 100 or 310). For example,the advisor 110 may receive data from a client (e.g., the client 312)and analyzes the data. At operation 512, the advisor 110 identifies aresource attribute (e.g., a resource, category of resource, a locationof a resource, and/or an owner of a resource, among others) from thedata being sent from the electronic device. In one embodiment, theadvisor 110 identifies that the category of a resource is an e-commerceresource category.

At operation 530, the advisor 110 identifies a data attribute beingrequested by the resource. For example, the advisor 110 may identifythat the type of data associated with a user being requested by theresource. In one embodiment, the advisor 110 identifies that the type ofdata requested from an e-commerce cite corresponds to a user'smembership in a social network.

At operation 540, the advisor 110 identifies one or more rules from aset of rules (e.g., the rules 119) associated with an identifiedresource and an identified type of requested data. For example, theadvisor 110 identifies a first rule from the rules 119 based on theidentified resource attribute and the identified data attribute. In oneembodiment, the advisor 110 identifies a rule from the set of rules 119based on the resource category “e-commerce” and the data type “user'smembership in a social network.” The identified rule indicates whetheror not the data corresponding to the data type can be shared with theidentified resource category.

At operation 550, the advisor 110 modifies the data sent from theelectronic device (e.g., the electronic device 100 or 310) based on theidentified rule. For example, the advisor 110 may remove one or moredata packets from the data being sent from the electronic device basedon the identified rule. In one embodiment, the identified rule mayindicate that the data type “user's membership in a social network” isnot to be shared with resources corresponding to the resource category“e-commerce.” Accordingly, the advisor 110 may remove one or more datapackets corresponding to a “user's membership in a social network” fromthe data being sent from the electronic device to an e-commerce websitebased on the identified rule.

In one or more embodiments, the advisor 110 may add one or more datapackets to the data being sent from the electronic device based on theidentified rule. In one embodiment, the identified rule may indicatethat the data type “user's membership in a social network” is to beshared with resources corresponding to the resource category“e-commerce.” Accordingly, the advisor 110 may add one or more datapackets corresponding to a “user's membership in a social network” tothe data being sent from the electronic device to an e-commerce websitebased on the identified rule.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

In the following, reference is made to embodiments presented in thisdisclosure. However, the scope of the present disclosure is not limitedto specific described embodiments. Instead, any combination of thefollowing features and elements, whether related to differentembodiments or not, is contemplated to implement and practicecontemplated embodiments. Furthermore, although embodiments disclosedherein may achieve advantages over other possible solutions or over theprior art, whether or not a particular advantage is achieved by a givenembodiment is not limiting of the scope of the present disclosure. Thus,the following aspects, features, embodiments and advantages are merelyillustrative and are not considered elements or limitations of theappended claims except where explicitly recited in a claim(s). Likewise,reference to “the invention” shall not be construed as a generalizationof any inventive subject matter disclosed herein and shall not beconsidered to be an element or limitation of the appended claims exceptwhere explicitly recited in a claim(s).

Aspects of the present invention may take the form of an entirelyhardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.”

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

What is claimed is:
 1. A method for regulating a flow of data between anelectronic device and a plurality of resources external to theelectronic device, the method comprises: generating a user profiledescribing a user of the electronic device; generating a resourceprofile describing each of the plurality of resources; generating acontext profile describing an outcome of one or more previousinteractions between the user of the electronic device and one or moreof the plurality of resources; generating a set of rules based on acomparison of the user profile, the resource profile, and the contextprofile, wherein each rule of the set of rules defines at least one ofwhen and what type of data of the user profile is shared with each ofthe plurality of resources; and modifying outgoing data being sent to afirst one of plurality of the resources from the electronic device basedon the set of rules by: identifying user data and resource data withinthe outgoing data; identifying one or more rules of the set of rulesaccording to the user data and the resource data; and modifying theoutgoing data based on the one or more rules.
 2. The method of claim 1further comprising intercepting the outgoing data and modifying a datapacket within the outgoing data based on the one or more rules.
 3. Themethod of claim 2, wherein modifying the data packet comprising at leastone of removing data associated with the user profile from the outgoingdata and adding data associated with the user profile to the outgoingdata based on the one or more rules.
 4. The method of claim 1, whereingenerating the user profile comprises analyzing data stored within theelectronic device associated with the user.
 5. The method of claim 1,wherein generating the resource profile comprises at least one ofdetermining a category of each of the plurality of resources, an ownerof each of the plurality of resources, and a location of each of theplurality of resources.
 6. The method of claim 1, wherein generating thecontext profile comprises at least one of determining a type of datasent by the user to the one or more of the plurality of resources.
 7. Anelectronic device, comprising: a memory storing instructions: aprocessor coupled to the memory a configured execute the instructions,the instructions when executed cause: a user profile manager of anadvisor to generate a user profile associated with a user of theelectronic device; a resource profile manager of the advisor to generatea resource profile associated with each of a plurality of resourcesexternal to the electronic device; a context profile manager of theadvisor to generate a context profile associated with an outcome of oneor more previous interactions between the user of the electronic deviceand one or more the plurality of resources; a rule manager of theadvisor to generate a set of rules based on a comparison of the userprofile, the resource profile and the context profile, wherein each ruleof the set of rules defines at least one of when and what type of dataof the user profile is shared with each of the plurality of resources;and the advisor to modify outgoing data sent to a first one of theplurality of resources from the electronic device based on the set ofrules by: identifying user data and resource data within the outgoingdata; identifying one or more rules of the set of rules according to theuser data and the resource data; and modifying the outgoing data basedon the one or more rules.
 8. The electronic device of claim 7, whereinthe processor is further causes the advisor to intercept the outgoingdata and modify a data packet within the outgoing data based on the oneor more rules.
 9. The electronic device of claim 8, wherein modifyingthe data packet comprising at least one of removing data associated withthe user profile from the outgoing data and adding data associated withthe user profile to the outgoing data based on the one or more rules.10. The electronic device of claim 7, wherein the user profile manageris configured to analyze data stored within the electronic devicecorresponding to the user to generate the user profile.
 11. Theelectronic device of claim 7, wherein generating the resource profilecomprises at least one of determining a category of a resource of theplurality of resources, an owner of the resource, and a location of theresource.
 12. The electronic device of claim 7, wherein generating thecontext profile comprises at least one of determining a type of datasent by the user to the plurality of resources.
 13. A computer programproduct for controller user data, the computer program productcomprising: a computer-readable storage medium having computer-readableprogram code embodied therewith, the computer-readable program codeexecutable by one or more computer processors to: generate a userprofile associated with a user of an electronic device; generate aresource profile associated with a plurality of resources external tothe electronic device; generate a context profile describing an outcomeof one or more previous interactions between the user of the electronicdevice and one or more of the plurality of resources; generate a set ofrules based on a comparison of the user profile, the resource profile,and the context profile, wherein each rule of the set of rules definesat least one of when and what type of data of the user profile is sharedwith each of the plurality of resources; and modify outgoing data beingsent to a first one of the plurality of resources form the electronicdevice based on the set of rules by: identifying user data and resourcedata within the outgoing data; identifying one or more rules of the setof rules according to the user data and the resource data; and modifyingthe outgoing data based on the one or more rules.
 14. The computerprogram product of claim 13, wherein the computer-readable program codeis further executable to: intercept the outgoing data and modify a datapacket within the outgoing data based on the one or more rules.
 15. Thecomputer program product of claim 14, wherein modifying the data packetcomprising at least one of removing data associated with the userprofile from the outgoing data and adding data associated with the userprofile to the outgoing data based on the one or more rules.
 16. Thecomputer program product of claim 13, wherein generating the userprofile comprises analyzing data stored within the electronic devicecorresponding to the user.
 17. The computer program product of claim 13,wherein generating the resource profile comprises at least one ofdetermining a category of a resource of the plurality of resources, anowner of the resource, and a location of the resource.
 18. The computerprogram product of claim 13, wherein generating the context profilecomprises at least one of determining a type of data sent by the user toa resource of the plurality of resources.